The decoding of video data encoded according to a contemporary video coding standard such as H.264/AVC or according to a planned video coding standard such as HEVC is known to be a computationally intensive task. Accordingly various techniques are known to enhance the throughput and efficiency of this decoding.
One known technique is for the decoding task to be split into two separate phases, namely a first parsing phase in which the encoded video bitstream is interpreted to derive macroblock-based information therefrom and a second rendering phase in which the macroblock-based information is rendered into pixel data for display. The division of the decoding process into these two phases, in particular where the macroblock-based information is stored between the phases, enables various performance improvements to be made, for example by at least partially decoupling the throughput of each phase from each other. Furthermore this separation enables additional improvements to be made, such as those disclosed in UK patent application 1013625.7, the entire contents of which are incorporated herein by reference, wherein the parsing can take place in bitstream macroblock order, whilst the rendering can take place in raster scan macroblock order, thus enabling each process to operate in the order it is most efficiently suited to.
Another known technique derives from a feature of standards such as H.264/AVC which allows an individual picture to be encoded as several independent “slices” (consecutive raster scan order sequences of macroblocks). The independence of these slices means that much of their decoding can be distributed amongst more than one decoding unit, with separate slices being reconstructed to pixels in parallel, with a final de-blocking pass being used as required to smooth across slice boundaries. A disadvantage of the additional de-blocking pass is the additional memory bandwidth which it consumes. An overview of the H.264/AVC standard, including the slice aspect thereof, can be found in “Overview of the H.264/AVC Video Coding Standard”, Thomas Wiegand, et al., IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, July 2003.
The paper “Parallel entropy decoding for high resolution video coding”, J. Zhao and A. Segall, Visual Communications and Image Processing 2009, introduces the concept of an “entropy slice” where the entropy decoding operation for each slice is independent, but for pixel reconstruction the pixels are permitted to be predicted from neighbouring slices, the aim being to increase the compression quality of the video standard.
In general, a challenge connected with the parallel parsing of separate slices in the encoded video bitstream is the requirement for the separate parsing units to operate in coordination with one another. One way of ensuring that the separate parsing units do not conflict with one another is to provide a lock-based mechanism. For example, each parsing unit may be configured to set a lock for the row in which it is currently interpreting macroblocks to ensure that conflicts with another parsing unit seeking to process other macroblocks in that row do not occur. However, such lock-based mechanisms not only require additional overhead to administer, but also introduce inefficiencies such as the latency imposed on another system component whilst waiting for a particular lock to be cleared.
Accordingly, it would be desirable to provide an improved technique for carrying out the parallel parsing of slices in encoded video.